Computer systems typically include operating system software that controls basic function of the computer, and one or more software application programs that run under the control of the operating system to perform desired tasks. For example, a typical IBM® Personal Computer may run the OS/2® operating system, and under the control of the OS/2® operating system, a user may execute an application program, such as a word processor. As the capabilities of computer systems have increased, the software programs designed for these high performance systems have become more powerful. Additionally, software development costs have continued to rise because more powerful and complex programs take more time to produce.
One way in which the performance of application software programs has been improved while the associated development costs have been reduced is by using object-oriented programming concepts. One goal of object-oriented programming is to create small, reusable sections of program code—known as objects—that can be quickly and easily combined and re-used to create new programs. This is similar to the idea of using the same set of building blocks again and again to create many different structures. The modular and re-usable aspects of objects typically speed development of new programs, thereby reducing the costs associated with the software development cycle. In addition, by creating and re-using a group of well-tested objects, a more stable, uniform, and consistent approach to developing new computer programs can be achieved.